﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MotorMetricas.Datos.Interfaces;


namespace MotorMetricas.Datos.FabricaDatos
{
    public abstract  class  FabricaDao
    {
        

       public FabricaDao()
        {
          
        }
   
        /// <summary>
        /// Metodo que devuelve la fabrica de escogencia segun la opcion dada
        /// </summary>
        /// <param name="tipoFabrica"></param>
        /// <returns></returns>
        public static FabricaDao ObtenerFabricaDeDao(int tipoFabrica) 
        {
            switch (tipoFabrica)
            {
                case 1:
                    return new FabricaSqlServer();
                case 2:
                    //return new FabricaMySql();
                default:
                    return null;
            }
            
        }

        /// <summary>
        /// Declaracion de los metodos abstractos
        /// </summary>
        /// <returns></returns>
        

        public abstract IDaoAccesoProyecto ObternerDaoProyecto();

        public abstract IDaoAccesoMetrica ObtenerDaoMetrica();

        public abstract IDaoAccesoReporte ObtenerDaoReporte();
    }
}
